#include <stdio.h>

int mat[100][100];

void getmat(int m,int n)
{
	int nownum=1;
	for(int ni=0;ni<n;ni++)
	{
		for(int mi=0;mi<m;mi++)
		{
			mat[ni][mi]=nownum;
			nownum++;
		}
	}
}

void outputMat(int m,int n)
{
	for(int ni=0;ni<n;ni++)
	{
		for(int mi=0;mi<m;mi++)
			printf("%d ",mat[ni][mi]);
		printf("\n");
	}
}

void outputInverMat(int m,int n)
{
	for(int mi=0;mi<m;mi++)
	{
		for(int ni=0;ni<n;ni++)
			printf("%d ",mat[ni][mi]);
		printf("\n");
	}
}

void outputTri(int m,int n) //注意这个m是没用的
{
	int nownum=1;
	int nowm=1;
	for(int ni=1;ni<=n;ni++)
	{
		for(int mi=1;mi<=nowm;mi++)
		{
			printf("%d ",nownum);
			nownum++;
		}
		printf("\n");
		nowm++;
	}
} 

int main()
{
	int m,n;
	scanf("%d%d",&m,&n);
	getmat(m,n);
	outputMat(m,n);
	printf("\n");
	outputInverMat(m,n);
	printf("\n");
	outputTri(m,n);
}